package com.qili.controller;

import com.qili.annotation.TokenCheck;
import com.qili.entity.sys.SysAppVersions;
import com.qili.service.sys.SysAppVersionsService;
import com.qili.util.JsonUtil;
import com.qili.util.StringUtil;
import com.qili.util.VersionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @date 2021年11月5日
 */
@Controller
@RequestMapping("/app/version")
public class AppVersionsController {

    @Autowired
    private SysAppVersionsService sysAppVersionsService;

    /**
     * 查询全部的版本信息
     * @param appVersions
     * @return
     */
    @ApiOperation(value = "/queryList", httpMethod = "Post", notes = "所有版本信息")
    @PostMapping(value = "queryList")
    @ResponseBody
    @TokenCheck
    public JsonUtil queryList(SysAppVersions appVersions){
        List<SysAppVersions> appVersionsList = sysAppVersionsService.selectAll();
        return JsonUtil.sucessWithData("看看这个数据，",appVersionsList);
    }

    /**
     * 比较版本号大小【判断是否是最新版本】
     * 线上版本 大则返回一个正数,本地版本 大返回一个负数,相等则返回0
     * @param onLineV 线上版本
     * @return
     */
    @ApiOperation(value = "/estimateVersion", httpMethod = "Get", notes = "所有版本信息")
    @GetMapping(value = "estimateVersion")
    @ResponseBody
    @TokenCheck
    public JsonUtil estimateVersion(String onLineV){
        JsonUtil json = new JsonUtil();
        if (StringUtil.isBlank(onLineV)){
            return JsonUtil.error("参数为空！");
        }
        try {
            // 查询数据库中版本号最新的一条记录
            SysAppVersions appVersions = sysAppVersionsService.selectNewestVersion();
            // 判断是线上版本号大&本地版本号大
            int i = VersionUtil.compareVersion(onLineV, appVersions.getVersionsNumber());
            // 线上版本号大
            if (i >= 0){
                json.setFlag(false);
                json.setMsg("已经是最新版本了。");
            }else {
                json.setFlag(true);
                json.setData(appVersions);
            }
        }catch (Exception e){
            e.printStackTrace();
            json.setMsg("操作失败" + e.getMessage());
            json.setFlag(false);
            return json;
        }
        return json;
    }




}
